package com.smart.common.mybatis.util;

import java.util.List;
import java.util.LinkedList;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

/**
 * @author lgb
 * @date 2020年6月13日 上午11:09:01 Copyright (C) 深圳工勘科技
 * @说明:
 **/
public class FieldUtil {

	public static List<Field> getFieldList(Class<?> clazz) {
		if (null == clazz) {
			return null;
		}
		List<Field> fieldList = new LinkedList<Field>();
		Field[] fields = clazz.getDeclaredFields();
		for (Field field : fields) {
			// 过滤静态属性
			if (Modifier.isStatic(field.getModifiers())) {
				continue;
			}
			// 过滤transient 关键字修饰的属性
			if (Modifier.isTransient(field.getModifiers())) {
				continue;
			}
			fieldList.add(field);
		}
		// 处理父类字段
		Class<?> superClass = clazz.getSuperclass();
		if (superClass.equals(Object.class)) {
			return fieldList;
		}
		fieldList.addAll(getFieldList(superClass));
		return fieldList;
	}
}